const express = require('express')
const app = express()
const port = 3000

var server = require('http').createServer(app);
var io = require('socket.io')(server);
var count = 0;


io.on('connection', function (socket) {
    // 服务端向客户端发送消息
    // socket.emit('request', /* … */); // emit an event to the socket

    // 服务端向客户端发送消息(broadcast-广播)
    // io.emit('broadcast', /* … */); // emit an event to all connected sockets

    // 服务端定时给所有客户端发送消息
    // setInterval(() => {
    //     io.emit('msg', 'hello world' + (new Date()))
    // }, 1000);

    // 用户登录时监听消息
    socket.on('login', (data) => {
        console.log(data + '登录了')
        // 更新房间人数
        count++
        // 注意此处不能用socket发送消息，要向所有客户端发送消息，否则只有当前客户端的聊天人数发生改变
        io.emit('count', count)
        // 把登录人存入 socket 对象中
        socket.username = data
    })

    // 服务端监听客户端发来的事件消息
    socket.on('send', (data) => {
        // 服务端将监听到某一个客户端的消息广播给所有客户端
        io.emit('msg', { user: socket.username, msg: data })
    });

    // 服务端监听客户端断开连接
    socket.on('disconnect', function () {
        count--
        io.emit('count', count)
    })
});


// 静态文件中间件
app.use(express.static(__dirname + '/static'))

app.get('/', (req, res) => {
    res.send('Hello World!')
})

app.get('*', (req, res) => {
    // 发送文件 参数是文件路径
    res.sendFile(__dirname + '/view/1.html')
})


server.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})